Put watch on device node only if probe was sucessful.
authoremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Thu, 15 Dec 2005 13:38:16 +0000 (13:38 +0000)
committeremellor@leeni.uk.xensource.com <emellor@leeni.uk.xensource.com>
Thu, 15 Dec 2005 13:38:16 +0000 (13:38 +0000)
This fix segfault on netfront when creating more than three network devices on
domU.

Signed-off-by: Murillo F. Bernardes <mfb@br.ibm.com>
linux-2.6-xen-sparse/drivers/xen/xenbus/xenbus_probe.c

index dac16ff4ab555af33b8bd5029476db71d636d97a..ea09e357001510b87d99a5595769c05c35adbccd 100644 (file)
@@ -338,14 +338,6 @@ static int xenbus_dev_probe(struct device *_dev)
 
        DPRINTK("");
 
-       err = talk_to_otherend(dev);
-       if (err) {
-               printk(KERN_WARNING
-                      "xenbus_probe: talk_to_otherend on %s failed.\n",
-                      dev->nodename);
-               return err;
-       }
-
        if (!drv->probe) {
                err = -ENODEV;
                goto fail;
@@ -361,6 +353,14 @@ static int xenbus_dev_probe(struct device *_dev)
        if (err)
                goto fail;
 
+       err = talk_to_otherend(dev);
+       if (err) {
+               printk(KERN_WARNING
+                      "xenbus_probe: talk_to_otherend on %s failed.\n",
+                      dev->nodename);
+               return err;
+       }
+
        return 0;
 fail:
        xenbus_dev_error(dev, err, "xenbus_dev_probe on %s", dev->nodename);